package com.exonline.commons.utils;
/**
 * @desc   七牛云分布式文件下载工具类
 * @author hbrj
 */
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;

import com.qiniu.util.Auth;

public class QiNiuDownloadUtils {
	//1.七牛云账号的accessKey
	private static	String accessKey ;
	//2.七牛云账号的secretKey
	private static	String secretKey ;
	//3.七牛云账号的bucket
	private static	String bucket ;

	//4.指定上传文件的key(默认不指定key的情况下，以文件内容的hash值作为文件名)
	private static	String key;

	//5.绑定的bucket的域名
	private static  String  domainOfBucket;//用户 bucket 绑定的下载域名

	//6.七牛云下载链接的有效时间
	private static  String timeout;//七牛云默认的下载超时时间，单位为秒，默认为3600秒 如果是0 则表示永久有效

	/**1.通过PropertuUtils工具类加载七牛云的属性配置文件**/
	static{
		try
		{
			Map<String, Object> map = PropertuUtils.getInfoFromProperties("QiNiu.properties");
			System.out.println("-------------QiNiuDownloadUtils---------------");
			map.forEach((k, v)->System.out.println(k+":"+v));
			accessKey=(String) map.get("accessKey");
			secretKey=(String) map.get("secretKey");
			bucket=(String) map.get("bucket_public");
			domainOfBucket=(String) map.get("domainOfBucket");
			timeout=(String) map.get("timeout");
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
	/**
	 * @desc  2.下载（下载私有空间中的文件：且是用手动拼接方式）
	 * @param fileName：必须参数：待下载的文件在七牛云中存放的位置和名字，例如:"images/22.jpg"（如果是根路径的话，可以直接写文件的名字即可:"22.jpg"）
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String getDownloadFilesUrl(String fileName) throws UnsupportedEncodingException
	{
		String encodedFileName = URLEncoder.encode(fileName, "utf-8").replace("+", "%20");
		String publicUrl = String.format("%s/%s", domainOfBucket, encodedFileName);
		Auth auth = Auth.create(accessKey, secretKey);
		String finalUrl = auth.privateDownloadUrl(publicUrl, Integer.parseInt(timeout));
		System.out.println("finalUrl---->"+finalUrl);
		return finalUrl;
	}

}
